1. Field of the Invention
The present invention relates to an optical disk drive, and more particularly, to a method and apparatus for controlling a revolution speed of a spindle motor for driving an optical disk.
2. Description of the Related Art
An optical disk drive rotates an optical disk by using a spindle motor and reads information recorded in the optical disk by detecting a change of a laser beam reflected from the optical disk. The optical disk drive is classified into several types according to functions, and each type of optical disk drive includes a disk loading/unloading mechanism, a spindle motor for rotating the optical disk, an electronic circuit for reproducing information read from the optical disk, and a controller which controls a flow of commands, states of flags, and data communication between the electronic circuit and a host such as a personal computer.
In reading information from the optical disk, the optical disk drive rotates the spindle motor depending on CLV (Constant Linear Velocity) control or CAV (Constant Angular Velocity) control, and reads digital information, in the form of an RF (Radio Frequency) signal, recorded in the optical disk by using an optical pickup.
To control revolution of the spindle motor, the controller detects a present revolution speed (i.e., RPM (Revolutions Per Minute)) of the spindle motor. For example, the drive detects the revolution speed by reproducing synchronous information arranged at regular intervals in the information read from the optical disk. Alternatively, the drive can detect the revolution speed by using a Hall sensor prepared in the spindle motor. When the revolution speed of the spindle motor is over 8.times. speed (8.times.216 RPM), it is preferable to detect the revolution speed by using hardware such as the Hall sensor in controlling the revolution speed. The above methods of detecting the revolution speed of the spindle motor ar both well known.
In controlling the revolution speed of the spindle motor by CAV control, the controller provides a spindle motor drive with a PWM (Pulse Width Modulation) signal shown in FIGS. 1A to 1C. The spindle motor driver then drives the spindle motor according to the PWM signal. Subsequently, the controller receives an FG (Frequency Generator) signal (including revolution velocity information) from the spindle motor and controls a pulse width of the PWM signal according to the FG signal. The controller outputs the PWM signal of FIG. 1A during a kick interval to kick up the revolution speed of the spindle motor to a target RPM, and outputs the PWM signal of FIG. 1B during a brake interval to brake down the spindle motor. Further, when the spindle motor reaches the target RPM, the controller outputs the PWM signal of FIG. 1C to maintain the target RPM. It is noted from FIGS. 1A to 1C that the PWM signal has a different pulse width according to operation intervals of the spindle motor.
Conventionally, even when the spindle motor reaches and maintains the target RPM, the controller continues to output the PWM signal of FIG. 1C fluctuating between a maximum level and a minimum level at regular intervals, which leads to an increase in the current consumption and instability of a spindle servo. That is, when the PWM signal goes to the minimum level from the maximum level and vice versa, a current is abruptly supplied to the spindle motor through the spindle motor driver, thereby causing an increase in the current consumption. Further, fluctuation of the PWM signal between the maximum level and minimum level brings about an instantaneous change of the revolution speed of the spindle motor, which causes instability of the spindle servo.
Moreover, the great voltage difference between the maximum level and the minimum level may be the cause of heat generation in the controller, and the continuous fluctuation of the PWM signal may overload the controller. Further, since the spindle motor reaches the target RPM depending upon the PWM signals for the kick and brake operations, it takes a relatively long time to reach the target RPM.